﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace Sige
{
    public partial class modificar_usuarios : Form
    {
        SqlConnection cn_superbit;
        DataSet dsUsuarios = new DataSet();
        Accesoadatos datos = new Accesoadatos();
        public class_usuarios usuarios = new class_usuarios();

        public modificar_usuarios()
        {
            InitializeComponent();
        }

        private void modificar_usuarios_Load(object sender, EventArgs e)
        {
            
            string rutaBDSuperbit = datos.getruta();
            cn_superbit = datos.ObtenerConexion(rutaBDSuperbit);
            txt_codigo.Text = usuarios.cod.ToString();
        }

        private void btn_guardar_usuario_Click(object sender, EventArgs e)
        {
            
            string sqlq = "select * from usuarios where codigo ='"+txt_codigo.Text+"'";
            SqlDataAdapter adaptador = new SqlDataAdapter(sqlq, cn_superbit);
            class_usuarios user = new class_usuarios();

            if (user.validar_repetidos(txtbx_pass.Text, txtbx_repetir_pass.Text) == true)
            {
                
                try
                {

                SqlCommand cmd_SP_guardar = new SqlCommand("modificar_user", cn_superbit); //creo un comando sql con el nombre de lo q se ejecuta.

                    cmd_SP_guardar.CommandType = CommandType.StoredProcedure; // defino el comando como un procedimiento
                    //defino cada parametro del procedure al comando, con el valor ingresado en el formulario.
                    //RECORDANDO LOS PARAMETROS: @cod char(4), @nombre char(8), @fechabaja datetime, 
                    //@fecha_mod_pass datetime, @clave varchar(10), @estado bit, @admin bit
                    cmd_SP_guardar.Parameters.Add("@cod", SqlDbType.Char).Value = txt_codigo.Text;
                    cmd_SP_guardar.Parameters.Add("@nombre", SqlDbType.Char).Value = txtbx_nombre.Text;
                    
                    cmd_SP_guardar.Parameters.Add("@fecha_mod_pass", SqlDbType.DateTime).Value = usuarios.fechaMPass(txtbx_pass.Text, txt_codigo.Text);//  DateTime.Today.ToLongDateString();

                    cmd_SP_guardar.Parameters.Add("@clave", SqlDbType.VarChar).Value = txtbx_pass.Text;

                    if (ck_box_Administrador.Checked == true)
                    {
                        cmd_SP_guardar.Parameters.Add("@admin", SqlDbType.Bit).Value = true;
                        //MessageBox.Show("Administrador");
                    }
                    else
                    {
                        cmd_SP_guardar.Parameters.Add("@admin", SqlDbType.Bit).Value = false;
                        //  MessageBox.Show("Nop Administrador");
                    }

                    // MessageBox.Show(ck_activo.Checked.ToString());
                    int resultado = cmd_SP_guardar.ExecuteNonQuery(); //ejecuta el comando.


                    cn_superbit.Close(); //cierro la conexion con la BD.

                    modificar_usuarios.ActiveForm.Close();
                }
                catch
                {
                    MessageBox.Show("No se ha dado el alta");
                }
            }
            else
            {
                MessageBox.Show("Las contraseñas no coinciden");
                txtbx_pass.Text = "";
                txtbx_repetir_pass.Text = "";
            }
        }

        private void btn_cerrar_Click(object sender, EventArgs e)
        {
            modificar_usuarios.ActiveForm.Close();
        }

        private void txt_codigo_KeyPress(object sender, KeyPressEventArgs e)
        {

            try
            {
                if (e.KeyChar == Convert.ToChar(Keys.Enter))
                {

                    string consulta = "select * from usuarios where codigo = '" + txt_codigo.Text+"'";
                    SqlDataAdapter adaptador = new SqlDataAdapter(consulta, cn_superbit);

                    int a = adaptador.Fill(dsUsuarios, "usuarios");

                    DateTime fechaA = new DateTime();
                    fechaA = (DateTime)dsUsuarios.Tables[0].Rows[0][2];

                    if (a == 1)
                    {
                        txtbx_nombre.Text = dsUsuarios.Tables[0].Rows[0][1].ToString();
                        txtbx_pass.Text = dsUsuarios.Tables[0].Rows[0][5].ToString();
                        txtbx_repetir_pass.Text = dsUsuarios.Tables[0].Rows[0][5].ToString();
                        txt_fechaAlta.Text = fechaA.Date.ToShortDateString();
                        ck_box_Administrador.Checked = (bool)dsUsuarios.Tables[0].Rows[0][7];

                        DateTime d = new DateTime();

                        d = (DateTime)dsUsuarios.Tables[0].Rows[0][4];

                        if (d.Year > DateTime.Today.Year)
                        {
                            lbl_ultima_contraseña.Text = "Nunca se ha cambiado la contraseña";
                        }
                        else
                        {
                            lbl_ultima_contraseña.Text = "Ultima Modificacion: " + d.ToShortDateString();
                        }
                    }
                    else
                    {
                        MessageBox.Show("No existe el Usuario");
                        dsUsuarios.Clear();
                    }
                }

                if (e.KeyChar == Convert.ToChar(Keys.Back))
                {
                    txtbx_nombre.Text = "";
                    txtbx_pass.Text = ""; ;
                    txt_fechaAlta.Text = "";
                    ck_box_Administrador.Checked = false;
                    lbl_ultima_contraseña.Text = "";
                    dsUsuarios.Clear();
                }
            }
            catch
            {
                MessageBox.Show("Usuario inexistente");
            }
        }

    }
}
